package com.dlws.modules.field.controller;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.dlws.common.utils.Constants;
import com.dlws.common.web.BaseController;
import com.dlws.modules.field.entity.FieldPrice;
import com.dlws.modules.field.entity.ProductField;
import com.dlws.modules.field.entity.ProductFieldValue;
import com.dlws.modules.field.service.FieldPriceService;
import com.dlws.modules.field.service.ProductFieldService;
import com.dlws.modules.field.service.ProductFieldValueService;
import com.dlws.modules.productinfo.entity.ProductInfo;
import com.dlws.modules.productinfo.entity.ProductInfoPageVo;
import com.dlws.modules.productinfo.service.ProductInfoService;
import com.page.Pagination;

/**
 * 
 * 描述：
 * 创建人： 魏泽超
 * 创建时间: 2016-6-7 上午11:09:04
 * @version
 */
@Controller
@RequestMapping("/field")
public class ProductFieldController extends BaseController {

	@Autowired
	private ProductInfoService productInfoService;

	@Autowired
	private ProductFieldService productFieldService;

	@Autowired
	private ProductFieldValueService fieldValueService;

	@Autowired
	private FieldPriceService fieldPriceService;

	/**
	 * 
	 * 描述：产品展示
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 上午11:27:32
	 * @version
	 */
	@RequestMapping(value = "/productList")
	public String productList(ModelMap model, Integer pageNo, HttpServletRequest request) {
		// ProductInfo productInfo = new ProductInfo();
		//
		// productInfo.setIsUse(1);
		// productInfo.setIsDelete(0);
		//
		// List<ProductInfo> queryAll =
		// productInfoService.queryAll(productInfo);
		// if (null != queryAll && queryAll.size() > 0) {
		// model.put("productList", queryAll);
		// }
		StringBuilder params = new StringBuilder();
		ProductInfoPageVo productInfo = new ProductInfoPageVo();

		productInfo.setPageNo(Pagination.cpn(pageNo));
		productInfo.setPageSize(Constants.PAGE_SIZE);
		// productInfo.setPageSize(2);
		// productInfo.setIsUse(1);
		// productInfo.setIsDelete(0);

		Pagination pagination = productInfoService.pagelist(productInfo);

		String url = request.getContextPath() + "/field/productList.do";
		pagination.pageView(url, params.toString());
		model.put("page", pagination);

		return "/field/list";
	}

	/**
	 * 
	 * 描述：去添加产品属性页面
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 上午11:27:23
	 * @version
	 */
	@RequestMapping(value = "/toAdd")
	public String toAdd(String productId, ModelMap model) {
		
		model.put("productId", productId);
//		ProductField productField=new ProductField();
//		productField.setProductId(Integer.valueOf(productField.getProductId()));
//		ProductField queryOne=productFieldService.queryOne(productField);
//		model.put("productFieldlist", queryOne);
		
		return "/field/fieldform";
	}

	/**
	 * 
	 * 描述：添加产品属性
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 上午11:26:43
	 * @version
	 */
	@ResponseBody
	@RequestMapping(value = "/addField")
	public Map<String, Object> addField(ProductField productFiled) {
		Map<String, Object> map = new HashMap<String, Object>();
		ProductInfo productInfo = new ProductInfo();
		productInfo.setId(Integer.valueOf(productFiled.getProductId()));
		ProductInfo queryOne = productInfoService.queryOne(productInfo);
		boolean flag = false;
		if (null != queryOne) {
			productFiled.setProductId(queryOne.getId());
			productFiled.setProductName(queryOne.getProductName());
			productFiled.setCreateTime(new Date());
			productFiled.setIsDelete(0);
			productFiled.setIsUse(1);
			int i = productFieldService.add(productFiled);
			if (i > 0) {
				flag = true;
			}
		}
		map.put("flag", flag);
		return map;
	}

	/**
	 * 
	 * 描述：查看产品属性
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 下午12:45:11
	 * @version
	 */
	@RequestMapping("/toFieldList")
	public String toFieldList(ModelMap model, String productId) {
		ProductField productField = new ProductField();
		productField.setProductId(Integer.valueOf(productId));
		List<ProductField> queryAll = productFieldService.queryAll(productField);
		if (null != queryAll && queryAll.size() > 0) {
			model.put("fieldList", queryAll);
			model.put("productId", productId);
		}
		return "/field/fieldlist";
	}

	/**
	 * 
	 * 描述：去属性值添加页面
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 下午12:54:04
	 * @version
	 */
	@RequestMapping("/toAddFieldValue")
	public String toAddFieldValue(String fieldId, ModelMap model, String productId) {
		model.put("fieldId", fieldId);
		model.put("productId", productId);
		return "/field/fieldvalueform";
	}

	/**
	 * 
	 * 描述：去属性价格添加页面
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 下午12:55:02
	 * @version
	 */
	@RequestMapping("/toAddFieldPrice")
	public String toAddFieldPrice(String fieldId, ModelMap model, String productId) {
		ProductFieldValue productFieldValue = new ProductFieldValue();
		productFieldValue.setFieldId(Integer.valueOf(fieldId));
		List<ProductFieldValue> queryAll = fieldValueService.queryAll(productFieldValue);
		if (null != queryAll && queryAll.size() > 0) {
			model.put("fieldValueList", queryAll);
		}
		model.put("productId", productId);
		model.put("fieldId", fieldId);
		return "/field/fieldpriceform";
	}

	/**
	 * 
	 * 描述：添加属性值
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 下午1:29:19
	 * @version
	 */
	@ResponseBody
	@RequestMapping("/addFieldValue")
	public Map<String, Object> addFieldValue(ProductFieldValue fieldValue) {
		Map<String, Object> map = new HashMap<String, Object>();
		boolean flag = false;
		fieldValue.setCreateTime(new Date());
		fieldValue.setIsDelete(0);
		fieldValue.setIsUse(1);
		int add = fieldValueService.add(fieldValue);
		if (add > 0) {
			flag = true;
		}
		map.put("flag", flag);
		return map;
	}

	/**
	 * 
	 * 描述：添加属性价格
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 下午1:31:07
	 * @version
	 */
	@ResponseBody
	@RequestMapping("/addFieldPrice")
	public Map<String, Object> addFieldPrice(FieldPrice fieldPrice) {
		Map<String, Object> map = new HashMap<String, Object>();
		ProductFieldValue productFieldValue = new ProductFieldValue();
		productFieldValue.setId(fieldPrice.getFieldValueId());
		ProductFieldValue queryOne = fieldValueService.queryOne(productFieldValue);
		boolean flag = false;
		if (null != queryOne) {
			FieldPrice fieldPrice2 = new FieldPrice();
			fieldPrice2.setIsDelete(0);
			fieldPrice2.setIsUse(1);
			fieldPrice2.setFieldValueId(queryOne.getId());
			// 查看数据库中是否已经存在
			FieldPrice queryOne2 = fieldPriceService.queryOne(fieldPrice2);
			if (null == queryOne2) {
				fieldPrice.setFieldValueId(queryOne.getId());
				fieldPrice.setIsDelete(0);
				fieldPrice.setIsUse(1);
				fieldPrice.setCreateTime(new Date());
				fieldPrice.setFieldValue(queryOne.getFieldValue());
				int add = fieldPriceService.add(fieldPrice);
				if (add > 0) {
					flag = true;
				}
			}
			map.put("flag", flag);
		}
		return map;
	}

	/**
	 * 
	 * 描述：查看属性值
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 下午1:47:00
	 * @version
	 */
	@RequestMapping("/fieldValueListByFieldId")
	public String fieldValueListByFieldId(String fieldId, ModelMap model) {
		ProductFieldValue productFieldValue = new ProductFieldValue();
		productFieldValue.setFieldId(Integer.valueOf(fieldId));
		List<ProductFieldValue> queryAll = fieldValueService.queryAll(productFieldValue);
		if (null != queryAll && queryAll.size() > 0) {
			model.put("fieldValueList", queryAll);
		}
		return "/field/fieldvaluelist";
	}

	/**
	 * 
	 * 描述：查看属性价格
	 * 创建人： 魏泽超
	 * 创建时间: 2016-6-7 下午1:47:06
	 * @version
	 */
	@RequestMapping("/fieldPriceListByFieldId")
	public String fieldPriceListByFieldId(String fieldId, ModelMap model) {
		FieldPrice fieldPrice = new FieldPrice();
		fieldPrice.setFieldId(Integer.valueOf(fieldId));
		List<FieldPrice> queryAll = fieldPriceService.queryAll(fieldPrice);
		if (null != queryAll && queryAll.size() > 0) {
			model.put("fieldPriceList", queryAll);
		}
		return "/field/fieldpricelist";
	}

	/**
	 * 
	 * 描述：启用状态的更改
	 * 创建人： 高磊
	 * 创建时间: 2016-6-18 上午10:32:30
	 * @version
	 */
	@RequestMapping(value = "/fieldUp")
	public String fieldUp(ProductField productField) {
		if (productField.getIsUse() == 0) {
			// 0启用1不启用
			productField.setIsUse(1);
		} else {
			productField.setIsUse(0);
		}
		productFieldService.updateByPrimaryKeySelective(productField);
		return "redirect:/field/toFieldList.do?productId=" + productField.getProductId();

	}

	/**
	 * 
	 * 描述：删除
	 * 创建人： 高磊
	 * 创建时间: 2016-6-18 上午11:41:34
	 * @version
	 */
	@RequestMapping(value = "/fieldDel")
	public String fieldDel(ProductField productField) {
		if (productField.getIsDelete() == 0) {
			productField.setIsDelete(1);
		} else {
			productField.setIsDelete(0);
		}
		productFieldService.updateByPrimaryKeySelective(productField);
		return "redirect:/field/toFieldList.do?productId=" + productField.getProductId();

	}

	/**
	 * 
	 * 描述:进入修改页面
	 * 创建人： 高磊
	 * 创建时间: 2016-6-20 上午9:45:41
	 * @version
	 */
	@RequestMapping(value = "/toFieldUpdate")
	public String toFieldUpdate(ModelMap model, String id) {
		ProductField productField = new ProductField();
		productField.setId(Integer.valueOf(id));
		model.addAttribute("productField", productFieldService.queryOne(productField));
		return "/field/fieldupdate";
	}

	/**
	 * 
	 * 描述：修改
	 * 创建人： 高磊
	 * 创建时间: 2016-6-20 下午2:01:04
	 * @version
	 */
	@RequestMapping(value = "/updateField")
	public String updateField(ProductField productField) {
		productFieldService.updateByPrimaryKeySelective(productField);
		return "redirect:/field/toFieldList.do?productId=" + productField.getProductId();

	}

	/**
	 * 
	 * 描述：属性值删除
	 * 创建人： 高磊
	 * 创建时间: 2016-6-20 下午5:22:40
	 * @version
	 */
	@RequestMapping(value = "/fieldValueUpDel")
	public String fieldValueUpDel(ProductFieldValue productFieldValue, String productId, String fid) {
		if (0 == productFieldValue.getIsDelete()) {
			// 0启用1不启用
			productFieldValue.setIsDelete(1);
		} else {
			productFieldValue.setIsDelete(0);
		}
		fieldValueService.updateByPrimaryKeySelective(productFieldValue);
		return "redirect:/field/fieldValueListByFieldId.do?fieldId=" + fid;

	}

	/**
	 * 
	 * 描述：属性值启用
	 * 创建人： 高磊
	 * 创建时间: 2016-6-20 下午5:24:19
	 * @version
	 */
	@RequestMapping(value = "/FieldValueUp")
	public String FieldValueUp(ProductFieldValue productFieldValue, String productId, String fid) {
		if (0 == productFieldValue.getIsUse()) {
			// 0启用1不启用
			productFieldValue.setIsUse(1);
		} else {
			productFieldValue.setIsUse(0);
		}
		fieldValueService.updateByPrimaryKeySelective(productFieldValue);
		return "redirect:/field/fieldValueListByFieldId.do?fieldId=" + fid;

	}

	/**
	 * 
	 * 描述：属性价格删除
	 * 创建人： 高磊
	 * 创建时间: 2016-6-21 下午6:30:36
	 * @version
	 */
	@RequestMapping(value = "/FieldPriceDel")
	public String FieldPriceDel(FieldPrice fieldPrice, String foid) {
		if (0 == fieldPrice.getIsDelete()) {
			fieldPrice.setIsDelete(1);
		} else {
			fieldPrice.setIsDelete(0);
		}
		fieldPriceService.updateByPrimaryKeySelective(fieldPrice);
		return "redirect:/field/fieldPriceListByFieldId.do?fieldId=" + foid;

	}

	/**
	 * 
	 * 描述：属性价格启用
	 * 创建人： 高磊
	 * 创建时间: 2016-6-21 下午6:31:09
	 * @version
	 */
	@RequestMapping(value = "/FieldPriceUp")
	public String FieldPriceUp(FieldPrice fieldPrice, String foid) {
		if (0 == fieldPrice.getIsUse()) {
			fieldPrice.setIsUse(1);
		} else {
			fieldPrice.setIsUse(0);
		}
		fieldPriceService.updateByPrimaryKeySelective(fieldPrice);
		return "redirect:/field/fieldPriceListByFieldId.do?fieldId=" + foid;

	}
	
	/**
	 * 
	 * 描述：进入属性价格修改页面
	 * 创建人： 高磊
	 * 创建时间: 2016-6-23 下午5:21:07
	 * @version
	 */
	@RequestMapping(value = "/FieldPriceUpdate")
	public String FieldPriceUpdate(ModelMap model,String id){
		FieldPrice fieldPrice = new FieldPrice();
		fieldPrice.setId(Integer.valueOf(id));
		FieldPrice fp=fieldPriceService.queryOne(fieldPrice);
		model.addAttribute("fieldPrice", fp);
		return "/field/fieldpriceupdate";
	}
	/**
	 * 
	 * 描述：属性价格修改
	 * 创建人： 高磊
	 * 创建时间: 2016-6-23 下午6:39:24
	 * @version
	 */
	@RequestMapping(value = "/toFieldPriceUpdate")
	public String toFieldPriceUpdate(FieldPrice fieldPrice,String fid){
	
		fieldPriceService.updateByPrimaryKeySelective(fieldPrice);
		
		return "redirect:/field/fieldPriceListByFieldId.do?fieldId=" + fid;
		
	}
	/**
	 * 
	 * 描述：进入属性值修改页面
	 * 创建人： 高磊
	 * 创建时间: 2016-6-27 下午2:53:55
	 * @version
	 */
	@RequestMapping(value = "/toFieldValueUpdate")
	public String toFieldValueUpdate(ModelMap model, String id){
		ProductFieldValue productFieldValue = new ProductFieldValue();
		productFieldValue.setId(Integer.valueOf(id));
		ProductFieldValue pf = fieldValueService.queryOne(productFieldValue);
		model.addAttribute("productFieldValue", pf);
		return "/field/updatefieldvalueform";
		
	}
	/**
	 * 
	 * 描述:修改属性值
	 * 创建人： 高磊
	 * 创建时间: 2016-6-27 下午3:29:51
	 * @version
	 */
	@RequestMapping(value = "/fieldValueUpdate")
	public String fieldValueUpdate(ProductFieldValue productFieldValue,String vid){
		fieldValueService.updateByPrimaryKeySelective(productFieldValue);
		return "redirect:/field/fieldValueListByFieldId.do?fieldId="+ vid;
		
	}
}
